为什么会发生CLR FatalExecutionEngineError异常? |
您所在的位置:网站首页 › oracle 错误代码0xc0000005 › 为什么会发生CLR FatalExecutionEngineError异常? |
我们使用一个封装数值的结构,我发现当在表达式中使用此结构的可空版本时,会发生FatalExecutionEngineError: 附加信息:运行库遇到致命错误。错误的地址是线程0x52d8上的0x729c1e04。错误代码为0xc0000005。此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分的错误。此错误的常见来源包括COM-interop或PInvoke的用户封送处理错误,这可能会损坏堆栈。 我使用的是Visual Studio Premium 2013更新3,这里是源代码(C#,目标.NET Framework4.5): 代码语言:javascript复制using System; using System.Globalization; namespace ConsoleApplication4 { public struct Number { ValueType _val; private Number(double val) { this._val = val; } public static implicit operator double(Number val) { return Convert.ToDouble(val._val, CultureInfo.InvariantCulture); } public static implicit operator Number(double val) { return new Number(val); } } class Program { static void Main(string[] args) { Number? b = 1.2; var c = b - 1.2; Number b1 = 1.2; var c1 = b1 - 1.2; } } }注意,添加这个解决了这个问题,所以它不是紧急的,但是我非常感兴趣为什么这个问题实际上会发生。 代码语言:javascript复制public static implicit operator double(Number? val) { return Convert.ToDouble(val.GetValueOrDefault()._val, CultureInfo.InvariantCulture); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |